package com.codeblock_;

/**
 * @Author 小闽
 * @Date 2024/9/7 22:26
 * @PackageName: com.codeblock_
 * @ClassName: CodeBlockDetail02
 * @Description: 代码块细节02
 * @Version 1.0
 */
public class CodeBlockDetail02 {
    public static void main(String[] args) {
        // 根据静态代码块的执行原则，先定义的静态变量调用了getN1()静态方法，则执行顺序为
        // 1、getN1()被调用
        // 2、A的静态代码块01...
        // 3、getN2()被调用...
        // 4、A的普通代码块01
        // 5、A的无参构造方法被调用...
        A a = new A();
    }
}

class A{
    // 普通属性
    private int n2 = getN2();
    // 非静态代码块
    {
        System.out.println("A的普通代码块01");
    }
    // 静态属性/静态成员
    private static int n1 = getN1();
    // 静态代码块
    static{
        System.out.println("A的静态代码块01...");
    }
    // 静态方法
    public static int getN1(){
        System.out.println("getN1()被调用...");
        return 100;
    }
    // 非静态方法
    public int getN2(){
        System.out.println("getN2()被调用...");
        return 200;
    }
    // 构造方法

    public A() {
        System.out.println("A的无参构造方法被调用...");
    }
}
